#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>


#define NUM 128
#define CNT 50

int main()
{
  char command[NUM];

  for(;;)
  {
    command[0] = 0;
    char* com[CNT] = {NULL};
    // 打印提示符
    printf("[name@VM-24-6-centos dir]# ");
    fflush(stdout);
    
    // 获取命令字符串
    
    fgets(command, NUM, stdin);
    command[strlen(command) - 1] = 0;// "ls\n\0"

    // 解析命令字符串
    int i = 1; 
    com[0] = strtok(command, " ");
    while(com[i] = strtok(NULL, " "))
    {
      i++;
    }
    
    // 检测命令是否需要shell本身执行

    if(strcmp(com[0], "cd") == 0)
    {
      if(com[1])
        chdir(com[1]);
      continue;
    }

    // 执行第三方命令
  
    if(fork() == 0)
    {
      execvp(com[0], com); 
      exit(1);
    }
    
    waitpid(-1, NULL, 0);
  }
  return 0;
}
